package cn.org.xwb.main.utils;

import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;

/**
 * 和日期时间相关的工具类
 */
public class DateTimeUtil {

    private DateTimeUtil() {}

    /**
     * 获取当前时间的 2 位年份
     *
     * @return 当前时间的 2 位年份（数字字符串）
     */
    public static String getNowYear_2() {
        return String.format("%ty", new Date());
    }

    /**
     * 获取当前时间的 4 位年份
     *
     * @return 当前时间的 4 位年份（数字字符串）
     */
    public static String getNowYear_4() {
        return String.format("%tY", new Date());
    }

    /**
     * 获取当前时间的月份
     *
     * @return 当前时间的月份（数字字符串）
     */
    public static String getNowMouth() {
        return String.format("%tm", new Date());
    }

    /**
     * 获取当前时间的一个月中的哪一天（1~31）
     *
     * @return 当前时间的一个月中的哪一天（1~31）（数字字符串）
     */
    public static String getNowDay() {
        return String.format("%td", new Date());
    }

    /**
     * 获取当前时间的小时
     *
     * @return 当前时间的小时（数字字符串）
     */
    public static String getNowHour() {
        return String.format("%tH", new Date());
    }

    /**
     * 获取当前时间的分钟
     *
     * @return 当前时间的分钟（数字字符串）
     */
    public static String getNowMinute() {
        return String.format("%tM", new Date());
    }

    /**
     * 获取当前时间的秒
     *
     * @return 当前时间的秒（数字字符串）
     */
    public static String getNowSecond() {
        return String.format("%tS", new Date());
    }

    /**
     * 获取当前时间的毫秒
     *
     * @return 当前时间的毫秒（数字字符串）
     */
    public static String getNowMillisecond() {
        return String.format("%tL", new Date());
    }

    /**
     * 获取指定格式的字符串形式的当前时间<br/>
     * yyyy - 年<br/>
     * MM - 月<br/>
     * dd - 日<br/>
     * hh - 1-12小时<br/>
     * HH - 0-23小时<br/>
     * mm - 分<br/>
     * ss - 秒<br/>
     * SSS - 毫秒<br/>
     * E - 星期几<br/>
     * D - 一年中第几天<br/>
     * F - 一月中第几星期(这个月已经过的天数除以7)<br/>
     * w - 一年中第几星期<br/>
     * W - 一月中第几星期(根据实际情况)<br/>
     * a - 上下午<br/>
     * z - 时区<br/>
     *
     * @param format 时间格式
     * @return 指定格式的字符串形式的当前时间
     */
    public static String getNowDatetimeFormat(String format) {
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(format);
        LocalDateTime now = LocalDateTime.now();
        return now.format(dateTimeFormatter);
    }

}
